package com.yf.exam.common.enums;

import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;

import java.util.Objects;

/**
 * 字体枚举对象
 */
@Getter
@AllArgsConstructor
public enum FontEnum {

    /**********Windows-test************/


    /**
     * 宋体
     */
    WINDOWS_HZK14("STSong-Light", StringUtils.join(FontEnum.WINDOWS_FONT_PATH, "simsun.ttc")),

    /**
     * 楷体

     /**
     * 楷体
     */
    WINDOWS_KAI("KaiTi", StringUtils.join(FontEnum.WINDOWS_FONT_PATH, "KaiTi.ttf")),

    /**
     * 黑体
     */
    WINDOWS_HEI("SimHei", StringUtils.join(FontEnum.WINDOWS_FONT_PATH, "SimHei.ttf")),

    /**
     * 仿宋
     */
    WINDOWS_FANG("FangSong", StringUtils.join(FontEnum.WINDOWS_FONT_PATH, "FangSong.ttf")),

    /**********Windows-end*************/
    /**
     * 等线Light
     */
    DENG_XIAN_LIGHT("DengXian-Light", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "Dengl.ttf")),

    /**
     * 等线粗体
     */
    DENG_XIAN_BOLD("DengXian,Bold", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "Dengb.ttf")),

    /**
     * 方正舒体
     */
    FZ_SHU_TI("FZShuTi", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "FZSTK.TTF")),
    /**
     * 方正姚体
     */
    FZ_YAO_TI("FZYaoTi", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "FZYTK.TTF")),

    /**
     * 仿宋
     */
    FANG_SONG("FangSong", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "simfang.ttf")),

    /**
     * 黑体
     */
    SIM_HEI("SimHei", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "simhei.ttf")),

    /**
     * 华文彩云
     */
    ST_CAI_YUN("STCaiyun", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "STCAIYUN.TTF")),

    /**
     * 华文仿宋
     */
    ST_FANG_SONG("STFangsong", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "STFANGSO.TTF")),

    /**
     * 华文琥珀
     */
    ST_HU_PO("STHupo", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "STHUPO.TTF")),

    /**
     * 华文楷体
     */
    ST_KAI_TI("STKaiti", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "STKAITI.TTF")),


    /**
     * 华文隶书
     */
    ST_LI_TI("STLiti", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "STLITI.TTF")),

    /**
     * 华文宋体
     */
    ST_SONG("STSong", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "STSONG.TTF")),

    /**
     * 华文细黑
     */
    ST_XI_HEI("STXihei", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "STXIHEI.TTF")),

    /**
     * 华文新魏
     */
    ST_XIN_WEI("STXinwei", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "STXINWEI.TTF")),

    /**
     * 华文行楷
     */
    ST_XING_KAI("STXingkai", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "STXINGKA.TTF")),

    /**
     * 华文中宋
     */
    ST_ZHONG_SONG("STZhongsong", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "STZHONGS.TTF")),

    /**
     * 楷体
     */
    KAI_TI("KaiTi", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "simkai.ttf")),

    /**
     * 隶书
     */
    LI_SU("LiSu", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "SIMLI.TTF")),

    /**
     * 宋体
     */
    SIM_SUN("SimSun", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "simsun.ttc")),

    /**
     * 微软雅黑
     */
    MICROSOFT_YA_HEI("MicrosoftYaHei", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "msyh.ttc")),

    /**
     * 微软雅黑Light
     */
    MICROSOFT_YA_HEI_LIGHT("MicrosoftYaHeiLight", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "msyhl.ttc")),

    /**
     * 微软雅黑粗体
     */
    MICROSOFT_YA_HEI_BOLD("MicrosoftYaHei,Bold", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "msyhbd.ttc")),

    /**
     * 新宋体
     */
    NSIM_SUN("NSimSun", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "simsun.ttc")),

    /**
     * 幼圆
     */
    YOU_YUAN("YouYuan", StringUtils.join(FontEnum.CUSTOM_FONT_PATH, "SIMYOU.TTF")),


    ;

    public static final String WINDOWS_FONT_PATH = "C:\\Windows\\Fonts\\";

    public static final String LINUX_FONT_PATH = "/usr/share/fonts/";

    public static final String MAC_FONT_PATH = "/Library/Fonts/";

    public static final String CUSTOM_FONT_PATH = "/fonts/";

    /**
     * 字体名称
     */
    private final String fontName;

    /**
     * 字体路径
     */
    private final String fontPath;

    /**
     * 根据字体名获取字体值
     * @param fontName
     * @return
     */
    public static String getFontPath(String fontName) {
        for (FontEnum fontEnum : FontEnum.values()) {
            if (fontEnum.getFontName().equals(fontName)) {
                return fontEnum.getFontPath();
            }
        }
        return StrUtil.EMPTY;
    }

    /**
     * 根据字体名类型获取字体值
     * @param fontEnum
     * @return
     */
    public static String getFontPath(FontEnum fontEnum) {
        for (FontEnum anEnum : FontEnum.values()) {
            if (Objects.equals(anEnum, fontEnum)) {
                return anEnum.getFontPath();
            }
        }
        return StrUtil.EMPTY;
    }


}
